<!-- XHTML 1.0 Strict -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<meta name="author" content="Rachid Touzani" />
<meta name="keywords" content=" css, dropdowns, dropdown menu, drop-down, menu, navigation, nav, horizontal, vertical left-to-right, vertical right-to-left, horizontal linear, horizontal upwards, cross browser, internet explorer, ie, firefox, safari, opera, browser, lwis" />
<meta name="description" content="Clean, standards-friendly, modular framework for dropdown menus" />
<link href="../css/dropdown.vertical.css" media="screen" rel="stylesheet" type="text/css" />
<link href="../css/default.ultimate.css" media="screen" rel="stylesheet" type="text/css" />
<head>
<!-- Title -->
<title>OFELI - Documentation</title>
<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="../doxygen.css" />
<link rel="stylesheet" type="text/css" href="../tabs.css" />
</head>
<body>
<p align="center">
  <img src="../im/ofeli.gif" alt="OFELI's Logo" width="300" height="90">
</p>
<p align="center"><font color="#203F5B" size="4" face="verdana,Helvetica">
<b>An Object Oriented Finite Element Library</b></font></p>
<!-- Complete Page-->
<div id="main">
<div id="mainmenu">
 <div class="text">
<!-- Menu -->
 <div class="tabs">
  <ul class="tablist">
   <li><a href="../index.html"><span>Home</span></a>
    <li><a href="../overview.html"><span>Overview</span></a>
    <li><a href="../extlib.html"><span>External Libraries</span></a>
    <li><a href="../citing.html"><span>Citing OFELI</span></a>
    <li><a href="../fformats.html"><span>File Formats</span></a>
    <li><a href="../demos.html"><span>Demo Codes</span></a>
  </ul>
 </div>
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__Solver.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Solver<div class="ingroups"><a class="el" href="group__OFELI.html">OFELI</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Solver functions and classes.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1Reconstruction.html">Reconstruction</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">To perform various reconstruction operations.  <a href="classOFELI_1_1Reconstruction.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1EigenProblemSolver.html">EigenProblemSolver</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class to find eigenvalues and corresponding eigenvectors of a given matrix in a generalized eigenproblem, <em>i.e.</em> Find scalars l and non-null vectors v such that [K]{v} = l[M]{v} where [K] and [M] are symmetric matrices. The eigenproblem can be originated from a PDE. For this, we will refer to the matrices K and M as <em>Stiffness</em> and <em>Mass</em> matrices respectively.  <a href="classOFELI_1_1EigenProblemSolver.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1Integration.html">Integration</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for numerical integration methods.  <a href="classOFELI_1_1Integration.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1Iter.html">Iter&lt; T_ &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class to drive an iterative process.  <a href="classOFELI_1_1Iter.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1LinearSolver.html">LinearSolver&lt; T_ &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class to solve systems of linear equations by iterative methods.  <a href="classOFELI_1_1LinearSolver.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1MyNLAS.html">MyNLAS</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract class to define by user specified function.  <a href="classOFELI_1_1MyNLAS.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1MyOpt.html">MyOpt</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract class to define by user specified optimization function.  <a href="classOFELI_1_1MyOpt.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1NLASSolver.html">NLASSolver</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">To solve a system of nonlinear algebraic equations of the form f(u) = 0.  <a href="classOFELI_1_1NLASSolver.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1ODESolver.html">ODESolver</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">To solve a system of ordinary differential equations.  <a href="classOFELI_1_1ODESolver.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html">OptSolver</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">To solve an optimization problem with bound constraints.  <a href="classOFELI_1_1OptSolver.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1Prec.html">Prec&lt; T_ &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">To set a preconditioner.  <a href="classOFELI_1_1Prec.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1TimeStepping.html">TimeStepping</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">To solve time stepping problems, i.e. systems of linear ordinary differential equations of the form [A2]{y"} + [A1]{y'} + [A0]{y} = {b}.  <a href="classOFELI_1_1TimeStepping.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gaf9492726e3bc6330299d4c6cddfbf396"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#gaf9492726e3bc6330299d4c6cddfbf396">MAX_NB_EQUATIONS</a>&#160;&#160;&#160;5</td></tr>
<tr class="memdesc:gaf9492726e3bc6330299d4c6cddfbf396"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum number of equations.  <a href="#gaf9492726e3bc6330299d4c6cddfbf396">More...</a><br /></td></tr>
<tr class="separator:gaf9492726e3bc6330299d4c6cddfbf396"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad155031b7f2e178b109f9238b845c6ae"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#gad155031b7f2e178b109f9238b845c6ae">MAX_NB_INPUT_FIELDS</a>&#160;&#160;&#160;3</td></tr>
<tr class="memdesc:gad155031b7f2e178b109f9238b845c6ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum number of fields for an equation.  <a href="#gad155031b7f2e178b109f9238b845c6ae">More...</a><br /></td></tr>
<tr class="separator:gad155031b7f2e178b109f9238b845c6ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab48dd23d597898aefaab6415cc7e33cc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#gab48dd23d597898aefaab6415cc7e33cc">MAX_NB_MESHES</a>&#160;&#160;&#160;10</td></tr>
<tr class="memdesc:gab48dd23d597898aefaab6415cc7e33cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum number of meshes.  <a href="#gab48dd23d597898aefaab6415cc7e33cc">More...</a><br /></td></tr>
<tr class="separator:gab48dd23d597898aefaab6415cc7e33cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga080b6c2937dd8d8c6dda3a425f5109ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga080b6c2937dd8d8c6dda3a425f5109ff"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga080b6c2937dd8d8c6dda3a425f5109ff">TIME_LOOP</a>(ts,  t,  ft,  n)  </td></tr>
<tr class="memdesc:ga080b6c2937dd8d8c6dda3a425f5109ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">A macro to loop on time steps to integrate on time <em>ts</em> : Time step <em>t</em> : Initial time value updated at each time step <em>ft</em> : Final time value <em>n</em> : Time step index. <br /></td></tr>
<tr class="separator:ga080b6c2937dd8d8c6dda3a425f5109ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga547b16cb61ca40e320cbfa84962c8b01"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga547b16cb61ca40e320cbfa84962c8b01">TimeLoop</a></td></tr>
<tr class="memdesc:ga547b16cb61ca40e320cbfa84962c8b01"><td class="mdescLeft">&#160;</td><td class="mdescRight">A macro to loop on time steps to integrate on time.  <a href="#ga547b16cb61ca40e320cbfa84962c8b01">More...</a><br /></td></tr>
<tr class="separator:ga547b16cb61ca40e320cbfa84962c8b01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff4a1d20c7ff88bae1a718059aab02dd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#gaff4a1d20c7ff88bae1a718059aab02dd">IterationLoop</a>&#160;&#160;&#160;while (++theIteration&lt;MaxNbIterations &amp;&amp; Converged==false)</td></tr>
<tr class="memdesc:gaff4a1d20c7ff88bae1a718059aab02dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">A macro to loop on iterations for an iterative procedure.  <a href="#gaff4a1d20c7ff88bae1a718059aab02dd">More...</a><br /></td></tr>
<tr class="separator:gaff4a1d20c7ff88bae1a718059aab02dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0e680bb7c5a6e6a0583ced44a9d51325"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0e680bb7c5a6e6a0583ced44a9d51325"></a>
ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga0e680bb7c5a6e6a0583ced44a9d51325">operator&lt;&lt;</a> (ostream &amp;s, const Muscl3DT &amp;m)</td></tr>
<tr class="memdesc:ga0e680bb7c5a6e6a0583ced44a9d51325"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output mesh data as calculated in class <a class="el" href="classOFELI_1_1Muscl3DT.html" title="Class for 3-D hyperbolic solvers with Muscl scheme using tetrahedra. ">Muscl3DT</a>. <br /></td></tr>
<tr class="separator:ga0e680bb7c5a6e6a0583ced44a9d51325"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba5d7c89c2832ad701cc3f0c750928fb"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:gaba5d7c89c2832ad701cc3f0c750928fb"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#gaba5d7c89c2832ad701cc3f0c750928fb">BiCG</a> (const SpMatrix&lt; T_ &gt; &amp;A, int prec, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:gaba5d7c89c2832ad701cc3f0c750928fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Biconjugate gradient solver function.  <a href="group__Solver.html#gaba5d7c89c2832ad701cc3f0c750928fb">More...</a><br /></td></tr>
<tr class="separator:gaba5d7c89c2832ad701cc3f0c750928fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabe8cd86a83c560836c717808d06decb5"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:gabe8cd86a83c560836c717808d06decb5"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#gabe8cd86a83c560836c717808d06decb5">BiCGStab</a> (const SpMatrix&lt; T_ &gt; &amp;A, const Prec&lt; T_ &gt; &amp;P, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:gabe8cd86a83c560836c717808d06decb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Biconjugate gradient stabilized solver function.  <a href="group__Solver.html#gabe8cd86a83c560836c717808d06decb5">More...</a><br /></td></tr>
<tr class="separator:gabe8cd86a83c560836c717808d06decb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9355fc4014139252d5f939ae295893a5"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga9355fc4014139252d5f939ae295893a5"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga9355fc4014139252d5f939ae295893a5">BiCGStab</a> (const SpMatrix&lt; T_ &gt; &amp;A, int prec, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga9355fc4014139252d5f939ae295893a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Biconjugate gradient stabilized solver function.  <a href="group__Solver.html#ga9355fc4014139252d5f939ae295893a5">More...</a><br /></td></tr>
<tr class="separator:ga9355fc4014139252d5f939ae295893a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9eb542b51d6a2ac952e2b2bbd5f21138"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga9eb542b51d6a2ac952e2b2bbd5f21138"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga9eb542b51d6a2ac952e2b2bbd5f21138">CG</a> (const SpMatrix&lt; T_ &gt; &amp;A, const Prec&lt; T_ &gt; &amp;P, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga9eb542b51d6a2ac952e2b2bbd5f21138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conjugate gradient solver function.  <a href="group__Solver.html#ga9eb542b51d6a2ac952e2b2bbd5f21138">More...</a><br /></td></tr>
<tr class="separator:ga9eb542b51d6a2ac952e2b2bbd5f21138"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga554b9f066a4a2a36773eff4c3f9a4d71"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga554b9f066a4a2a36773eff4c3f9a4d71"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga554b9f066a4a2a36773eff4c3f9a4d71">CG</a> (const SpMatrix&lt; T_ &gt; &amp;A, int prec, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga554b9f066a4a2a36773eff4c3f9a4d71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conjugate gradient solver function.  <a href="group__Solver.html#ga554b9f066a4a2a36773eff4c3f9a4d71">More...</a><br /></td></tr>
<tr class="separator:ga554b9f066a4a2a36773eff4c3f9a4d71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafa2aac234cefc34242a77a8c846741c5"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:gafa2aac234cefc34242a77a8c846741c5"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#gafa2aac234cefc34242a77a8c846741c5">CGS</a> (const SpMatrix&lt; T_ &gt; &amp;A, int prec, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:gafa2aac234cefc34242a77a8c846741c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conjugate Gradient Squared solver function.  <a href="group__Solver.html#gafa2aac234cefc34242a77a8c846741c5">More...</a><br /></td></tr>
<tr class="separator:gafa2aac234cefc34242a77a8c846741c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga570d4a25d1945a14819ddd01bc640aef"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga570d4a25d1945a14819ddd01bc640aef"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga570d4a25d1945a14819ddd01bc640aef">GMRes</a> (const SpMatrix&lt; T_ &gt; &amp;A, const Prec&lt; T_ &gt; &amp;P, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, size_t m, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga570d4a25d1945a14819ddd01bc640aef"><td class="mdescLeft">&#160;</td><td class="mdescRight">GMRes solver function.  <a href="group__Solver.html#ga570d4a25d1945a14819ddd01bc640aef">More...</a><br /></td></tr>
<tr class="separator:ga570d4a25d1945a14819ddd01bc640aef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5f3f9683290c78a85df05aadeeef1cdf"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga5f3f9683290c78a85df05aadeeef1cdf"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga5f3f9683290c78a85df05aadeeef1cdf">GMRes</a> (const SpMatrix&lt; T_ &gt; &amp;A, int prec, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, size_t m, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga5f3f9683290c78a85df05aadeeef1cdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">GMRes solver function.  <a href="group__Solver.html#ga5f3f9683290c78a85df05aadeeef1cdf">More...</a><br /></td></tr>
<tr class="separator:ga5f3f9683290c78a85df05aadeeef1cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga36eb96776e21d95d9ca9bd46dbe6172a"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga36eb96776e21d95d9ca9bd46dbe6172a"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga36eb96776e21d95d9ca9bd46dbe6172a">GS</a> (const SpMatrix&lt; T_ &gt; &amp;A, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> omega, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga36eb96776e21d95d9ca9bd46dbe6172a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gauss-Seidel solver function.  <a href="group__Solver.html#ga36eb96776e21d95d9ca9bd46dbe6172a">More...</a><br /></td></tr>
<tr class="separator:ga36eb96776e21d95d9ca9bd46dbe6172a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga65b2c70702a6ba24616a93c1188a0d9d"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga65b2c70702a6ba24616a93c1188a0d9d"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga65b2c70702a6ba24616a93c1188a0d9d">Jacobi</a> (const SpMatrix&lt; T_ &gt; &amp;A, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> omega, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga65b2c70702a6ba24616a93c1188a0d9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Jacobi solver function.  <a href="group__Solver.html#ga65b2c70702a6ba24616a93c1188a0d9d">More...</a><br /></td></tr>
<tr class="separator:ga65b2c70702a6ba24616a93c1188a0d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab27d0cc4ff53840022eb049867af87c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab27d0cc4ff53840022eb049867af87c6"></a>
ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#gab27d0cc4ff53840022eb049867af87c6">operator&lt;&lt;</a> (ostream &amp;s, const NLASSolver &amp;nl)</td></tr>
<tr class="memdesc:gab27d0cc4ff53840022eb049867af87c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output nonlinear system information. <br /></td></tr>
<tr class="separator:gab27d0cc4ff53840022eb049867af87c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d412d67f3804d00223120371bcdfa48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2d412d67f3804d00223120371bcdfa48"></a>
ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga2d412d67f3804d00223120371bcdfa48">operator&lt;&lt;</a> (ostream &amp;s, const ODESolver &amp;de)</td></tr>
<tr class="memdesc:ga2d412d67f3804d00223120371bcdfa48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output differential system information. <br /></td></tr>
<tr class="separator:ga2d412d67f3804d00223120371bcdfa48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3f1c03ea316fa554006a28910fbe47c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3f1c03ea316fa554006a28910fbe47c0"></a>
ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga3f1c03ea316fa554006a28910fbe47c0">operator&lt;&lt;</a> (ostream &amp;s, const OptSolver &amp;os)</td></tr>
<tr class="memdesc:ga3f1c03ea316fa554006a28910fbe47c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output differential system information. <br /></td></tr>
<tr class="separator:ga3f1c03ea316fa554006a28910fbe47c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3e56edcd67f3f8eddb9717c36c4157f"><td class="memTemplParams" colspan="2">template&lt;class T_ , class M_ &gt; </td></tr>
<tr class="memitem:gac3e56edcd67f3f8eddb9717c36c4157f"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#gac3e56edcd67f3f8eddb9717c36c4157f">Richardson</a> (const M_ &amp;A, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> omega, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler, int verbose)</td></tr>
<tr class="memdesc:gac3e56edcd67f3f8eddb9717c36c4157f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Richardson solver function.  <a href="group__Solver.html#gac3e56edcd67f3f8eddb9717c36c4157f">More...</a><br /></td></tr>
<tr class="separator:gac3e56edcd67f3f8eddb9717c36c4157f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga86daf449b352504b085c354af030b1c2"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga86daf449b352504b085c354af030b1c2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga86daf449b352504b085c354af030b1c2">Schur</a> (SkMatrix&lt; T_ &gt; &amp;A, SpMatrix&lt; T_ &gt; &amp;U, SpMatrix&lt; T_ &gt; &amp;L, SpMatrix&lt; T_ &gt; &amp;D, Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;c)</td></tr>
<tr class="memdesc:ga86daf449b352504b085c354af030b1c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solve a linear system of equations with a 2x2-block matrix.  <a href="group__Solver.html#ga86daf449b352504b085c354af030b1c2">More...</a><br /></td></tr>
<tr class="separator:ga86daf449b352504b085c354af030b1c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2174acbbdde7226a6b31ecf14abcfe4e"><td class="memTemplParams" colspan="2">template&lt;class T_ &gt; </td></tr>
<tr class="memitem:ga2174acbbdde7226a6b31ecf14abcfe4e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga2174acbbdde7226a6b31ecf14abcfe4e">Schur</a> (PETScMatrix&lt; T_ &gt; &amp;A, PETScMatrix&lt; T_ &gt; &amp;U, PETScMatrix&lt; T_ &gt; &amp;L, PETScMatrix&lt; T_ &gt; &amp;D, PETScVect&lt; T_ &gt; &amp;b, PETScVect&lt; T_ &gt; &amp;c)</td></tr>
<tr class="memdesc:ga2174acbbdde7226a6b31ecf14abcfe4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solve a linear system of equations with a 2x2-block matrix.  <a href="group__Solver.html#ga2174acbbdde7226a6b31ecf14abcfe4e">More...</a><br /></td></tr>
<tr class="separator:ga2174acbbdde7226a6b31ecf14abcfe4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga427b162d903d81fad84633c855c87b1f"><td class="memTemplParams" colspan="2">template&lt;class T_ , class M_ &gt; </td></tr>
<tr class="memitem:ga427b162d903d81fad84633c855c87b1f"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Solver.html#ga427b162d903d81fad84633c855c87b1f">SSOR</a> (const M_ &amp;A, const Vect&lt; T_ &gt; &amp;b, Vect&lt; T_ &gt; &amp;x, int max_it, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:ga427b162d903d81fad84633c855c87b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">SSOR solver function.  <a href="group__Solver.html#ga427b162d903d81fad84633c855c87b1f">More...</a><br /></td></tr>
<tr class="separator:ga427b162d903d81fad84633c855c87b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Solver functions and classes. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaf9492726e3bc6330299d4c6cddfbf396"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAX_NB_EQUATIONS&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Maximum number of equations. </p>
<p>Useful for coupled problems </p>

</div>
</div>
<a class="anchor" id="gad155031b7f2e178b109f9238b845c6ae"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAX_NB_INPUT_FIELDS&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Maximum number of fields for an equation. </p>
<p>Useful for coupled problems </p>

</div>
</div>
<a class="anchor" id="gab48dd23d597898aefaab6415cc7e33cc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAX_NB_MESHES&#160;&#160;&#160;10</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Maximum number of meshes. </p>
<p>Useful for coupled problems </p>

</div>
</div>
<a class="anchor" id="ga547b16cb61ca40e320cbfa84962c8b01"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TimeLoop</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="group__Global.html#ga564656b52180eab7d5f9abb58eb90fcf">NbTimeSteps</a> = int(<a class="code" href="group__Global.html#ga3fb590e5375a439474a2799323b4572b">theFinalTime</a>/<a class="code" href="group__Global.html#gafe343e984bb2022a960c0285c90ba97d">theTimeStep</a>); \</div><div class="line">          for (<a class="code" href="group__Global.html#gaa68f42f3d7b7cbe240136012d57e0d09">theTime</a>=<a class="code" href="group__Global.html#gafe343e984bb2022a960c0285c90ba97d">theTimeStep</a>, <a class="code" href="group__Global.html#ga38d2fb1712228d1c76ac3f54b1d5872b">theStep</a>=1; <a class="code" href="group__Global.html#gaa68f42f3d7b7cbe240136012d57e0d09">theTime</a>&lt;<a class="code" href="group__Global.html#ga3fb590e5375a439474a2799323b4572b">theFinalTime</a>+0.001*<a class="code" href="group__Global.html#gafe343e984bb2022a960c0285c90ba97d">theTimeStep</a>; <a class="code" href="group__Global.html#gaa68f42f3d7b7cbe240136012d57e0d09">theTime</a>+=<a class="code" href="group__Global.html#gafe343e984bb2022a960c0285c90ba97d">theTimeStep</a>, ++<a class="code" href="group__Global.html#ga38d2fb1712228d1c76ac3f54b1d5872b">theStep</a>)</div><div class="ttc" id="group__Global_html_gafe343e984bb2022a960c0285c90ba97d"><div class="ttname"><a href="group__Global.html#gafe343e984bb2022a960c0285c90ba97d">OFELI::theTimeStep</a></div><div class="ttdeci">real_t theTimeStep</div><div class="ttdoc">Time step label. </div></div>
<div class="ttc" id="group__Global_html_ga3fb590e5375a439474a2799323b4572b"><div class="ttname"><a href="group__Global.html#ga3fb590e5375a439474a2799323b4572b">OFELI::theFinalTime</a></div><div class="ttdeci">real_t theFinalTime</div><div class="ttdoc">Final time value. </div></div>
<div class="ttc" id="group__Global_html_ga564656b52180eab7d5f9abb58eb90fcf"><div class="ttname"><a href="group__Global.html#ga564656b52180eab7d5f9abb58eb90fcf">OFELI::NbTimeSteps</a></div><div class="ttdeci">int NbTimeSteps</div><div class="ttdoc">Number of time steps. </div></div>
<div class="ttc" id="group__Global_html_gaa68f42f3d7b7cbe240136012d57e0d09"><div class="ttname"><a href="group__Global.html#gaa68f42f3d7b7cbe240136012d57e0d09">OFELI::theTime</a></div><div class="ttdeci">real_t theTime</div><div class="ttdoc">Time value. </div></div>
<div class="ttc" id="group__Global_html_ga38d2fb1712228d1c76ac3f54b1d5872b"><div class="ttname"><a href="group__Global.html#ga38d2fb1712228d1c76ac3f54b1d5872b">OFELI::theStep</a></div><div class="ttdeci">int theStep</div><div class="ttdoc">Time step counter. </div></div>
</div><!-- fragment -->
<p>A macro to loop on time steps to integrate on time. </p>
<p>It uses the following global variables defined in <b><a class="el" href="namespaceOFELI.html" title="A namespace to group all library classes, functions, ... ">OFELI</a>:</b> <code>theStep, theTime, theTimeStep, theFinalTime</code> </p>

</div>
</div>
<a class="anchor" id="gaff4a1d20c7ff88bae1a718059aab02dd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IterationLoop&#160;&#160;&#160;while (++theIteration&lt;MaxNbIterations &amp;&amp; Converged==false)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A macro to loop on iterations for an iterative procedure. </p>
<p>It uses the following global variables defined in <b><a class="el" href="namespaceOFELI.html" title="A namespace to group all library classes, functions, ... ">OFELI</a>:</b> <code>theIteration, MaxNbIterations, Converged</code> </p><dl class="section warning"><dt>Warning</dt><dd>The variable <code>theIteration</code> must be zeroed before using this macro </dd></dl>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gaba5d7c89c2832ad701cc3f0c750928fb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int BiCG </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>prec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Biconjugate gradient solver function. </p>
<p>This function uses the preconditioned Biconjugate Conjugate Gradient algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>Enum variable selecting a preconditioner, among the values <code>IDENT_PREC</code>, <code>DIAG_PREC</code>, <code>ILU_PREC</code> or <code>SSOR_PREC</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">toler</td><td>[in] Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (double, float, complex&lt;double&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="gabe8cd86a83c560836c717808d06decb5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int BiCGStab </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Prec.html">Prec</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>P</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Biconjugate gradient stabilized solver function. </p>
<p>This function uses the preconditioned Conjugate Gradient Stabilized algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">P</td><td>Preconditioner (Instance of class <a class="el" href="classOFELI_1_1Prec.html" title="To set a preconditioner. ">Prec</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess on input and solution of the linear system on output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (double, float, complex&lt;double&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga9355fc4014139252d5f939ae295893a5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int BiCGStab </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>prec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Biconjugate gradient stabilized solver function. </p>
<p>This function uses the preconditioned Conjugate Gradient Stabilized algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>Enum variable selecting a preconditioner, among the values <code>IDENT_PREC</code>, <code>DIAG_PREC</code>, <code>ILU_PREC</code> or <code>SSOR_PREC</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (double, float, complex&lt;double&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga9eb542b51d6a2ac952e2b2bbd5f21138"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CG </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Prec.html">Prec</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>P</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Conjugate gradient solver function. </p>
<p>This function uses the preconditioned Conjugate Gradient algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">P</td><td>Preconditioner (Instance of class <a class="el" href="classOFELI_1_1Prec.html" title="To set a preconditioner. ">Prec</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (double, float, complex&lt;double&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga554b9f066a4a2a36773eff4c3f9a4d71"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CG </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>prec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Conjugate gradient solver function. </p>
<p>This function uses the preconditioned Conjugate Gradient algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of abstract class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>Enum variable selecting a preconditioner, among the values <code>IDENT_PREC</code>, <code>DIAG_PREC</code>, <code>ILU_PREC</code> or <code>SSOR_PREC</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (double, float, complex&lt;double&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="gafa2aac234cefc34242a77a8c846741c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CGS </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>prec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Conjugate Gradient Squared solver function. </p>
<p>This function uses the preconditioned Conjugate Gradient Squared algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>Enum variable selecting a preconditioner, among the values <code>IDENT_PREC</code>, <code>DIAG_PREC</code>, <code>ILU_PREC</code> or <code>SSOR_PREC</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (real_t, float, complex&lt;real_t&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga570d4a25d1945a14819ddd01bc640aef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GMRes </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Prec.html">Prec</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>P</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>GMRes solver function. </p>
<p>This function uses the preconditioned GMRES algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">P</td><td>Preconditioner (Instance of class <a class="el" href="classOFELI_1_1Prec.html" title="To set a preconditioner. ">Prec</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of subspaces to generate for iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (double, float, complex&lt;double&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga5f3f9683290c78a85df05aadeeef1cdf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GMRes </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>prec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>GMRes solver function. </p>
<p>This function uses the preconditioned GMRES algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function CG </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>Enum variable selecting a preconditioner, among the values <code>IDENT_PREC</code>, <code>DIAG_PREC</code>, <code>ILU_PREC</code> or <code>SSOR_PREC</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Number of subspaces to generate for iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (double, float, complex&lt;double&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga36eb96776e21d95d9ca9bd46dbe6172a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GS </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>omega</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gauss-Seidel solver function. </p>
<p>This function uses the relaxed Gauss-Seidel algorithm to solve a linear system with a sparse matrix.<br />
 The global variable Verbosity enables choosing output message level </p><ul>
<li>
Verbosity &lt; 2 : No output message </li>
<li>
Verbosity &gt; 1 : Notify executing the function GS </li>
<li>
Verbosity &gt; 2 : Notify convergence with number of performed iterations or divergence </li>
<li>
Verbosity &gt; 3 : Output each iteration number and residual </li>
<li>
Verbosity &gt; 6 : Print final solution if convergence </li>
<li>
Verbosity &gt; 10 : Print obtained solution at each iteration </li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">omega</td><td>Relaxation parameter. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (real_t, float, complex&lt;real_t&gt;, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga65b2c70702a6ba24616a93c1188a0d9d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Jacobi </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>omega</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Jacobi solver function. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">omega</td><td>Relaxation parameter. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (real_t, float, complex&lt;real_t&gt;, ...) </td></tr>
    <tr><td class="paramname">&lt;M_&gt;</td><td>Matrix storage class</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="gac3e56edcd67f3f8eddb9717c36c4157f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Richardson </td>
          <td>(</td>
          <td class="paramtype">const M_ &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>omega</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>verbose</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Richardson solver function. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix problem (Instance of abstract class <b>M_</b>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">omega</td><td>Relaxation parameter. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">verbose</td><td>Information output parameter (<code>0</code>: No output, <code>1</code>: Output iteration information, <code>2</code> and greater: Output iteration information and solution at each iteration. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>nb_it Number of performed iterations,</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>Data type (real_t, float, complex&lt;real_t&gt;, ...) </td></tr>
    <tr><td class="paramname">&lt;M_&gt;</td><td>Matrix storage class</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga86daf449b352504b085c354af030b1c2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Schur </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1SkMatrix.html">SkMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>U</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1SpMatrix.html">SpMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>c</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Solve a linear system of equations with a 2x2-block matrix. </p>
<p>The linear system is of the form</p>
<pre class="fragment">     | A  U | |x|   |b|
     |      | | | = | |
     | L  D | |y|   |c|</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Instance of class <a class="el" href="classOFELI_1_1SkMatrix.html" title="To handle square matrices in skyline storage format. ">SkMatrix</a> class for the first diagonal block. The matrix must be invertible and factorizable (Do not use <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a> class) where <code>A</code>, <code>U</code>, <code>L</code>, <code>D</code> are instances of matrix classes, </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">U</td><td>Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a> for the upper triangle block. The matrix can be rectangular </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">L</td><td>Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a> for the lower triangle block. The matrix can be rectangular </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">D</td><td>Instance of class <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a> for the second diagonal block. The matrix must be factorizable (Do not use <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a> class) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>Vector (Instance of class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) that contains the first block of right-hand side on input and the first block of the solution on output. <code>b</code> must have the same size as the dimension of <code>A</code>. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance that contains the second block of right-hand side on output and the first block of the solution on output. <code>c</code> must have the same size as the dimension of <code>D</code>.</td></tr>
  </table>
  </dd>
</dl>
<p>Template Argument:</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>data type (real_t, float, ...)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>

</div>
</div>
<a class="anchor" id="ga2174acbbdde7226a6b31ecf14abcfe4e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Schur </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1PETScMatrix.html">PETScMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1PETScMatrix.html">PETScMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>U</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1PETScMatrix.html">PETScMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1PETScMatrix.html">PETScMatrix</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1PETScVect.html">PETScVect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1PETScVect.html">PETScVect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>c</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Solve a linear system of equations with a 2x2-block matrix. </p>
<p>The linear system is of the form</p>
<pre class="fragment">     | A  U | |x|   |b|
     |      | | | = | |
     | L  D | |y|   |c|</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Instance of class <a class="el" href="classOFELI_1_1SkMatrix.html" title="To handle square matrices in skyline storage format. ">SkMatrix</a> class for the first diagonal block. The matrix must be invertible and factorizable (Do not use <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a> class) where <code>A</code>, <code>U</code>, <code>L</code>, <code>D</code> are instances of matrix classes, </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">U</td><td>Instance of class <a class="el" href="classOFELI_1_1PETScMatrix.html" title="To handle matrices in sparse storage format using the Petsc library. ">PETScMatrix</a> for the upper triangle block. The matrix can be rectangular </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">L</td><td>Instance of class <a class="el" href="classOFELI_1_1PETScMatrix.html" title="To handle matrices in sparse storage format using the Petsc library. ">PETScMatrix</a> for the lower triangle block. The matrix can be rectangular </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">D</td><td>Instance of class <a class="el" href="classOFELI_1_1PETScMatrix.html" title="To handle matrices in sparse storage format using the Petsc library. ">PETScMatrix</a> for the second diagonal block. The matrix must be factorizable (Do not use <a class="el" href="classOFELI_1_1SpMatrix.html" title="To handle matrices in sparse storage format. ">SpMatrix</a> class) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>Vector (Instance of class <a class="el" href="classOFELI_1_1PETScVect.html" title="To handle general purpose vectors using Petsc. ">PETScVect</a>) that contains the first block of right-hand side on input and the first block of the solution on output. <code>b</code> must have the same size as the dimension of <code>A</code>. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td><a class="el" href="classOFELI_1_1PETScVect.html" title="To handle general purpose vectors using Petsc. ">PETScVect</a> instance that contains the second block of right-hand side on output and the first block of the solution on output. <code>c</code> must have the same size as the dimension of <code>D</code>.</td></tr>
  </table>
  </dd>
</dl>
<p>Template Argument:</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">&lt;T_&gt;</td><td>data type (real_t, float, ...) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga427b162d903d81fad84633c855c87b1f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int SSOR </td>
          <td>(</td>
          <td class="paramtype">const M_ &amp;&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; T_ &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SSOR solver function. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Problem matrix (Instance of abstract class <b>M_</b>). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Right-hand side vector (class <a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a>) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">x</td><td><a class="el" href="classOFELI_1_1Vect.html" title="To handle general purpose vectors. ">Vect</a> instance containing initial solution guess in input and solution of the linear system in output (If iterations have succeeded). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximum number of iterations. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance for convergence (measured in relative weighted 2-Norm). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of performed iterations,</dd></dl>
<p><b>Template</b> <b>Arguments:</b> </p>
<ul>
<li><em>T_</em> data type (double, float, ...)<br />
 </li>
<li><em>M_</em> Matrix storage class<br />
 <dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>
</li>
</ul>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->

</div> <!-- class text -->
</div> <!-- main menu -->
<!-- Google Search -->
<br><br>
<center>
  <div id="cse" style="width: 80%;">Loading</div>
  <script src="http://www.google.com/jsapi" type="text/javascript"></script>
  <script type="text/javascript"> 
     google.load('search', '1', {language : 'en', style : google.loader.themes.SHINY});
     google.setOnLoadCallback(function() {
        var customSearchOptions = {};  var customSearchControl = new google.search.CustomSearchControl(
        '012396140824982761142:-qrywxcfi_o', customSearchOptions);
        customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
        customSearchControl.draw('cse');
     }, true);
   </script>
   <style type="text/css">
     .gsc-control-cse {
     font-family: Verdana, sans-serif;
     border-color: #DAE0E5;
     background-color: #DAE0E5;
   }
   .gsc-control-cse .gsc-table-result { font-family: Verdana, sans-serif; }
   input.gsc-input { border-color: #B6BEC5; }
   input.gsc-search-button {
     border-color: #B6BEC5;
     background-color: #D0D1D4;
   }
   .gsc-tabHeader.gsc-tabhInactive {
     border-color: #999999;
     background-color: #EEEEEE;
   }
   .gsc-tabHeader.gsc-tabhActive {
     border-color: #999999;
     background-color: #999999;
   }
   .gsc-tabsArea { border-color: #999999; }
   .gsc-webResult.gsc-result,
   .gsc-results .gsc-imageResult {
     border-color: #FFFFFF;
     background-color: #FFFFFF;
   }
   .gsc-webResult.gsc-result:hover,
   .gsc-imageResult:hover {
     border-color: #D2D6DC;
     background-color: #EDEDED;
   }
   .gsc-webResult.gsc-result.gsc-promotion:hover {
     border-color: #D2D6DC;
     background-color: #EDEDED;
   }
   .gs-webResult.gs-result a.gs-title:link,
   .gs-webResult.gs-result a.gs-title:link b,
   .gs-imageResult a.gs-title:link,
   .gs-imageResult a.gs-title:link b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:visited,
   .gs-webResult.gs-result a.gs-title:visited b,
   .gs-imageResult a.gs-title:visited,
   .gs-imageResult a.gs-title:visited b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:hover,
   .gs-webResult.gs-result a.gs-title:hover b,
   .gs-imageResult a.gs-title:hover,
   .gs-imageResult a.gs-title:hover b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:active,
   .gs-webResult.gs-result a.gs-title:active b,
   .gs-imageResult a.gs-title:active,
   .gs-imageResult a.gs-title:active b { color: #0568CD; }
   .gsc-cursor-page { color: #0568CD; }
   a.gsc-trailing-more-results:link { color: #0568CD; }
   .gs-webResult .gs-snippet,
   .gs-imageResult .gs-snippet,
   .gs-fileFormatType { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl,
   .gs-imageResult div.gs-visibleUrl { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl-short { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl-short { display: none; }
   .gs-webResult div.gs-visibleUrl-long { display: block; }
   .gs-promotion div.gs-visibleUrl-short { display: none; }
   .gs-promotion div.gs-visibleUrl-long { display: block; }
   .gsc-cursor-box { border-color: #FFFFFF; }
   .gsc-results .gsc-cursor-box .gsc-cursor-page {
      border-color: #999999;
      background-color: #FFFFFF;
      color: #0568CD;
   }
   .gsc-results .gsc-cursor-box .gsc-cursor-current-page {
      border-color: #999999;
      background-color: #999999;
      color: #0568CD;
   }
   .gsc-webResult.gsc-result.gsc-promotion {
      border-color: #D2D6DC;
      background-color: #D0D1D4;
   }
   .gsc-completion-title { color: #0568CD; }
   .gsc-completion-snippet { color: #5F6A73; }
   .gs-promotion a.gs-title:link,
   .gs-promotion a.gs-title:link *,
   .gs-promotion .gs-snippet a:link { color: #0066CC; }
   .gs-promotion a.gs-title:visited,
   .gs-promotion a.gs-title:visited *,
   .gs-promotion .gs-snippet a:visited { color: #0066CC; }
   .gs-promotion a.gs-title:hover,
   .gs-promotion a.gs-title:hover *,
   .gs-promotion .gs-snippet a:hover { color: #0066CC; }
   .gs-promotion a.gs-title:active,
   .gs-promotion a.gs-title:active *,
   .gs-promotion .gs-snippet a:active { color: #0066CC; }
   .gs-promotion .gs-snippet,
   .gs-promotion .gs-title .gs-promotion-title-right,
   .gs-promotion .gs-title .gs-promotion-title-right *  { color: #333333; }
   .gs-promotion .gs-visibleUrl,
   .gs-promotion .gs-visibleUrl-short { color: #5F6A73; }
   </style>
</center>
<!-- End of Google Search Box -->
<br><br><br></p>
<div id="foot_bar">
  Copyright &copy; 1998-2019 Rachid Touzani&nbsp;
</div>
</div> <!-- main -->
</body>
</HTML>
